package com.ruoyi.web.core.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 用户行为记录对象 user_behavior
 * 
 * @author ruoyi
 * @date 2025-10-27
 */
public class UserBehavior extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long id;

    /** 用户ID */
    @Excel(name = "用户ID")
    private String userId;

    /** 短剧ID */
    @Excel(name = "短剧ID")
    private String dramaId;

    /** 观看次数 */
    @Excel(name = "观看次数")
    private Long watchCount;

    /** 完播率 */
    @Excel(name = "完播率")
    private BigDecimal completionRate;

    /** 是否点赞 */
    @Excel(name = "是否点赞")
    private Integer liked;

    /** 是否评论 */
    @Excel(name = "是否评论")
    private Integer commented;

    /** 是否收藏 */
    @Excel(name = "是否收藏")
    private Integer collected;

    /** 评分1-5 */
    @Excel(name = "评分1-5")
    private Long rating;

    /** 观看时长(分钟) */
    @Excel(name = "观看时长(分钟)")
    private Long watchDurationMinutes;

    /** 最后观看日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后观看日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastWatchDate;

    /** 偏好分数0-10 */
    @Excel(name = "偏好分数0-10")
    private Long preferenceScore;

    /** 行为类型 */
    @Excel(name = "行为类型")
    private String behaviorType;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Date createdAt;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setUserId(String userId) 
    {
        this.userId = userId;
    }

    public String getUserId() 
    {
        return userId;
    }

    public void setDramaId(String dramaId) 
    {
        this.dramaId = dramaId;
    }

    public String getDramaId() 
    {
        return dramaId;
    }

    public void setWatchCount(Long watchCount) 
    {
        this.watchCount = watchCount;
    }

    public Long getWatchCount() 
    {
        return watchCount;
    }

    public void setCompletionRate(BigDecimal completionRate) 
    {
        this.completionRate = completionRate;
    }

    public BigDecimal getCompletionRate() 
    {
        return completionRate;
    }

    public void setLiked(Integer liked) 
    {
        this.liked = liked;
    }

    public Integer getLiked() 
    {
        return liked;
    }

    public void setCommented(Integer commented) 
    {
        this.commented = commented;
    }

    public Integer getCommented() 
    {
        return commented;
    }

    public void setCollected(Integer collected) 
    {
        this.collected = collected;
    }

    public Integer getCollected() 
    {
        return collected;
    }

    public void setRating(Long rating) 
    {
        this.rating = rating;
    }

    public Long getRating() 
    {
        return rating;
    }

    public void setWatchDurationMinutes(Long watchDurationMinutes) 
    {
        this.watchDurationMinutes = watchDurationMinutes;
    }

    public Long getWatchDurationMinutes() 
    {
        return watchDurationMinutes;
    }

    public void setLastWatchDate(Date lastWatchDate) 
    {
        this.lastWatchDate = lastWatchDate;
    }

    public Date getLastWatchDate() 
    {
        return lastWatchDate;
    }

    public void setPreferenceScore(Long preferenceScore) 
    {
        this.preferenceScore = preferenceScore;
    }

    public Long getPreferenceScore() 
    {
        return preferenceScore;
    }

    public void setBehaviorType(String behaviorType) 
    {
        this.behaviorType = behaviorType;
    }

    public String getBehaviorType() 
    {
        return behaviorType;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("userId", getUserId())
            .append("dramaId", getDramaId())
            .append("watchCount", getWatchCount())
            .append("completionRate", getCompletionRate())
            .append("liked", getLiked())
            .append("commented", getCommented())
            .append("collected", getCollected())
            .append("rating", getRating())
            .append("watchDurationMinutes", getWatchDurationMinutes())
            .append("lastWatchDate", getLastWatchDate())
            .append("preferenceScore", getPreferenceScore())
            .append("behaviorType", getBehaviorType())
            .append("createdAt", getCreatedAt())
            .toString();
    }
}
